<!doctype html>
<html>
<head>
  <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">

  <title>core-input</title>

  <script src="../platform/platform.js"></script>

  <link href="core-input.html" rel="import">

  <style>
    body {
      padding: 24px;
      margin: 0;
      -webkit-transform: translateZ(0);
      font-family: sans-serif;
      font-size: 16px;
    }

    section {
      margin: 2em 0;
    }

    aside {
      background: #ccc;
      padding: 1em;
      margin-right: 2em;
      font-size: 12px;
      width: 250px;
      border-radius: 3px;
    }

    core-input {
      margin: 1em;
    }

    core-input[multiline] {
      border: 1px dotted #ccc;
    }

    core-input.sized {
      width: 500px;
      height: 200px;
    }

    .validation core-input,
    .validation core-input[multiline] {
      border: solid 1px lime;
    }

    .validation core-input.invalid,
    .validation core-input[multiline].invalid {
      border: solid 1px red;
    }

  </style>

</head>
<body>

  <section horizontal start layout>
    <aside>A single-line text input. See console for committed values.</aside>
    <core-input id="single" placeholder="Type something..."></core-input>
    <script>
      var single = document.getElementById('single');
      single.addEventListener('change', function() {
        console.log('single: value committed: ', single.value);
      });
    </script>
  </section>

  <section horizontal start layout>
    <aside>The <code>type</code> attribute is supported. This is a single-line input with <code>type = password</code>. See console for committed values.</aside>
    <core-input id="password" type="password" placeholder="Enter password..."></core-input>
    <script>
      var password = document.getElementById('password');
      password.addEventListener('change', function() {
        console.log('password: value committed: ', password.value);
      });
    </script>
  </section>

  <section horizontal start layout>
    <aside>A multi-line text input with 3 rows. The input is normally unstyled but here is styled with a dotted border to show its size.</aside>
    <core-input multiline rows="3" placeholder="Type many lines here..."></core-input>
  </section>

  <section horizontal start layout>
    <aside>A multi-line text input sized with CSS. The input is normally unstyled but here is styled with a dotted border to show its size.</aside>
    <core-input class="sized" multiline rows="fit" placeholder="This input is 500px * 200px"></core-input>
  </section>

  <section horizontal start layout>
    <aside>Inputs with the <code>tabindex</code> attribute.</aside>
    <div>
      <core-input tabindex="2" placeholder="tabindex = 2"></core-input>
      <br>
      <core-input tabindex="3" placeholder="tabindex = 3"></core-input>
      <br>
      <core-input tabindex="1" placeholder="tabindex = 1"></core-input>
    </div>
  </section>

  <section horizontal start layout>
    <aside>Validation examples. The border color reflects the current validation state. See console for validation events.</aside>
    <div class="validation">
      <core-input id="validate-number" type="number" placeholder="type = number"></core-input>
      <br>
      <core-input id="validate-email" type="email" placeholder="type = email"></core-input>
      <br>
      <core-input id="validate-required" required placeholder="required"></core-input>
      <br>
      <core-input id="validate-ml-required" multiline rows="3" required placeholder="required (multiline)"></core-input>
      <br>
      <core-input id="validate-pattern" pattern="a*bc" placeholder="with pattern = a*bc"></core-input>
      <br>
      <core-input id="validate-min-max" type="number" min="5" max="10" placeholder="type = number, min = 5, max = 10"></core-input>
      <br>
      <core-input id="validate-step" type="number" step="2" placeholder="type = number, step = 2"></core-input>
    </div>
    <script>
      document.querySelector('.validation').addEventListener('input-invalid', function(e, value, s) {
        console.log(e.target.id, 'invalid, inputValue:', e.detail.value, e.target.validity);
      });
      document.querySelector('.validation').addEventListener('input-valid', function(e, value, s) {
        console.log(e.target.id, 'valid, inputValue:', e.detail.value, e.target.validity);
      });
    </script>
  </section>


</body>
